package pro.cherish.knowledgeormmysql.config.mybatis;

import org.apache.ibatis.type.LocalDateTimeTypeHandler;
import org.springframework.stereotype.Component;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.ZoneOffset;

/**
 * @author 创建人：cherish
 * @version 版本号：V1.0
 * <p>
 * ***************************修订记录************************************
 * 2019-11-08 cherish 创建该类功能。
 * **********************************************************************
 * </p>
 * @ClassName 类名：MyLocalDateTimeTypeHandler
 * @Description 功能说明：
 * <p>
 * TODO
 * </p>
 * **********************************************************************
 * @date 创建日期： 2019-11-08 cherish
 */

// fixme 原来mybatis plus 高版本生成的逆向时间使用Localdatetime,但是数据库查询出来转换报错
// 参考博客 https://blog.csdn.net/weixin_43328357/article/details/101070245
// @Component
// 使用 extends LocalDateTimeTypeHandler  的子类，对字段类型进行单独处理，使用高版本的druid后，不需要配置下方转换也可
public class MyLocalDateTimeTypeHandler extends LocalDateTimeTypeHandler {

    @Override
    public LocalDateTime getResult(ResultSet rs, String columnName) throws SQLException {
        Object object = rs.getObject(columnName);
        System.out.println(object);
        if (object instanceof java.sql.Timestamp) {
            //在这里强行转换，将sql的时间转换为LocalDateTime
            return LocalDateTime//可以根据自己的需要进行转化
                    .ofInstant(((Timestamp) object).toInstant(), ZoneOffset.ofHours(0));
        }
        return super.getResult(rs, columnName);
    }
}
